/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.entidades;

import com.ec.socialfun.enumeradores.DiaSemanaEnum;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author hp
 */
@Entity
@Table(name = "sucursal")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Sucursal.findAll", query = "SELECT s FROM Sucursal s"),
    @NamedQuery(name = "Sucursal.findBySuCodigo", query = "SELECT s FROM Sucursal s WHERE s.suCodigo = :suCodigo"),
    @NamedQuery(name = "Sucursal.findBySuDescripcion", query = "SELECT s FROM Sucursal s WHERE s.suDescripcion = :suDescripcion"),
    @NamedQuery(name = "Sucursal.findBySuLonguitud", query = "SELECT s FROM Sucursal s WHERE s.suLonguitud = :suLonguitud"),
    @NamedQuery(name = "Sucursal.findBySuLatitud", query = "SELECT s FROM Sucursal s WHERE s.suLatitud = :suLatitud")})
public class Sucursal implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "SU_CODIGO")
    private Integer suCodigo;
    @Basic(optional = false)
    @Column(name = "SU_DESCRIPCION")
    private String suDescripcion;
    @Basic(optional = false)
    @Column(name = "SU_LONGUITUD")
    private Double suLonguitud;
    @Basic(optional = false)
    @Column(name = "SU_LATITUD")
    private Double suLatitud;
    @Column(name = "SU_IMAGEN")
    private String suImagen;
    @Basic(optional = false)
    @Column(name = "SU_NOMBRE")
    private String suNombre;
    @Basic(optional = false)
    @Column(name = "SU_DIRECCION")
    private String suDireccion;
    @Basic(optional = true)
    @Column(name = "SU_TELEFONO_1")
    private String suTelefonoUno;
    @Basic(optional = true)
    @Column(name = "SU_TELEFONO_2")
    private String suTelefonoDos;
    @Basic(optional = false)
    @Column(name = "SU_CAPACIDAD")
    private String suCapacidad;
    @Basic(optional = false)
    @Column(name = "SU_HORARIO_DESDE")
    private String suHorarioDesde;
    @Basic(optional = false)
    @Column(name = "SU_HORARIO_HASTA")
    private String suHorarioHasta;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "suCodigo")
    private List<UsuarioSucursal> usuarioSucursalList;
    @JoinColumn(name = "ZO_CODIGO", referencedColumnName = "ZO_CODIGO")
    @ManyToOne(optional = false)
    private Zona zoCodigo;
    @JoinColumn(name = "LO_CODIGO", referencedColumnName = "LO_CODIGO")
    @ManyToOne(optional = false)
    private Local loCodigo;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "suCodigo")
    private List<Evento> eventoList;
    @Basic(optional = false)
    @Column(name = "SU_DIA_ATENCION_DESDE")
    private String suDiaAtencionDesde;
    @Basic(optional = false)
    @Column(name = "SU_DIA_ATENCION_HASTA")
    private String suDiaAtencionHasta;
    @Transient
    private Date horaDesde;
    @Transient
    private Date horaHasta;
    @Transient
    private List<String> imagenes;

    public String getSuDiaAtencionDesde() {
        return suDiaAtencionDesde;
    }

    public void setSuDiaAtencionDesde(String suDiaAtencionDesde) {
        this.suDiaAtencionDesde = suDiaAtencionDesde;
    }

    public String getSuDiaAtencionHasta() {
        return suDiaAtencionHasta;
    }

    public void setSuDiaAtencionHasta(String suDiaAtencionHasta) {
        this.suDiaAtencionHasta = suDiaAtencionHasta;
    }

    public List<String> getImagenes() {
        return imagenes;
    }

    public void setImagenes(List<String> imagenes) {
        this.imagenes = imagenes;
    }

    public Sucursal() {
    }

    public Sucursal(Integer suCodigo) {
        this.suCodigo = suCodigo;
    }

    public Sucursal(Integer suCodigo, String suDescripcion, Double suLonguitud, Double suLatitud) {
        this.suCodigo = suCodigo;
        this.suDescripcion = suDescripcion;
        this.suLonguitud = suLonguitud;
        this.suLatitud = suLatitud;
    }

    public Integer getSuCodigo() {
        return suCodigo;
    }

    public void setSuCodigo(Integer suCodigo) {
        this.suCodigo = suCodigo;
    }

    public String getSuDescripcion() {
        return suDescripcion;
    }

    public void setSuDescripcion(String suDescripcion) {
        this.suDescripcion = suDescripcion;
    }

    public Double getSuLonguitud() {
        return suLonguitud;
    }

    public void setSuLonguitud(Double suLonguitud) {
        this.suLonguitud = suLonguitud;
    }

    public Double getSuLatitud() {
        return suLatitud;
    }

    public void setSuLatitud(Double suLatitud) {
        this.suLatitud = suLatitud;
    }

    public String getSuImagen() {
        return suImagen;
    }

    public void setSuImagen(String suImagen) {
        this.suImagen = suImagen;
    }

    public String getSuNombre() {
        return suNombre;
    }

    public void setSuNombre(String suNombre) {
        this.suNombre = suNombre;
    }

    public String getSuDireccion() {
        return suDireccion;
    }

    public void setSuDireccion(String suDireccion) {
        this.suDireccion = suDireccion;
    }

    public String getSuTelefonoUno() {
        return suTelefonoUno;
    }

    public void setSuTelefonoUno(String suTelefonoUno) {
        this.suTelefonoUno = suTelefonoUno;
    }

    public String getSuTelefonoDos() {
        return suTelefonoDos;
    }

    public void setSuTelefonoDos(String suTelefonoDos) {
        this.suTelefonoDos = suTelefonoDos;
    }

    public String getSuCapacidad() {
        return suCapacidad;
    }

    public void setSuCapacidad(String suCapacidad) {
        this.suCapacidad = suCapacidad;
    }

    public String getSuHorarioDesde() {
        return suHorarioDesde;
    }

    public void setSuHorarioDesde(String suHorarioDesde) {
        this.suHorarioDesde = suHorarioDesde;
    }

    public String getSuHorarioHasta() {
        return suHorarioHasta;
    }

    public void setSuHorarioHasta(String suHorarioHasta) {
        this.suHorarioHasta = suHorarioHasta;
    }

    @XmlTransient
    public List<UsuarioSucursal> getUsuarioSucursalList() {
        return usuarioSucursalList;
    }

    public void setUsuarioSucursalList(List<UsuarioSucursal> usuarioSucursalList) {
        this.usuarioSucursalList = usuarioSucursalList;
    }

    public Zona getZoCodigo() {
        return zoCodigo;
    }

    public void setZoCodigo(Zona zoCodigo) {
        this.zoCodigo = zoCodigo;
    }

    public Local getLoCodigo() {
        return loCodigo;
    }

    public void setLoCodigo(Local loCodigo) {
        this.loCodigo = loCodigo;
    }

    public Date getHoraDesde() {
        //poblarDate();
        return horaDesde;
    }

    public void setHoraDesde(Date horaDesde) {
        this.horaDesde = horaDesde;
    }

    public Date getHoraHasta() {
        return horaHasta;
    }

    public void setHoraHasta(Date horaHasta) {
        this.horaHasta = horaHasta;
    }

    @XmlTransient
    public List<Evento> getEventoList() {
        return eventoList;
    }

    public void setEventoList(List<Evento> eventoList) {
        this.eventoList = eventoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (suCodigo != null ? suCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Sucursal)) {
            return false;
        }
        Sucursal other = (Sucursal) object;
        if ((this.suCodigo == null && other.suCodigo != null) || (this.suCodigo != null && !this.suCodigo.equals(other.suCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.ec.socialfun.entidades.Sucursal[ suCodigo=" + suCodigo + " ]";
    }

    @Transient
    public String getUbicacionCompleta() {
        return this.getSuLatitud() + "," + this.getSuLonguitud();
    }

    @Transient
    public String getDiasAtencion() {
        String diaDesde = "";
        String diaHasta = "";
        for (int i = 0; i < DiaSemanaEnum.values().length; i++) {
            DiaSemanaEnum diasEnum = DiaSemanaEnum.values()[i];
            if (diasEnum.getCodigo().equals(this.getSuDiaAtencionDesde())) {
                diaDesde = diasEnum.getNombre();
                break;
            }
        }

        for (int i = 0; i < DiaSemanaEnum.values().length; i++) {
            DiaSemanaEnum diasEnum = DiaSemanaEnum.values()[i];
            if (diasEnum.getCodigo().equals(this.getSuDiaAtencionHasta())) {
                diaHasta = diasEnum.getNombre();
                break;
            }
        }

        return diaDesde + " a " + diaHasta;
    }
}
